Vue中ref和$refs的用法与介绍

您所在的位置:网站首页 vue refs变量 Vue中ref和$refs的用法与介绍

Vue中ref和$refs的用法与介绍

2023-08-14 03:12| 来源: 网络整理| 查看: 265

介绍:ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例。

注意:只要想要在Vue中直接操作DOM元素,就必须用ref属性进行注册

ref 有三种用法:

1、ref 加在普通的元素上,用this.ref.name 获取到的是dom元素

2、ref 加在子组件上,用this.ref.name 获取到的是组件实例,可以使用组件的所有方法。

3、如何利用 v-for 和 ref 获取一组数组或者dom 节点

当v-for用于元素或组件的时候,引用信息将是包含DOM节点或组件实例的数组,关于ref注册时间的重要说明;因为ref本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们,因为它们还不存在,$refs也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

1158910-20180801214632214-356594092.png

注意:

1、ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.$nextTick(()=>{}) 中调用。

2、如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,此时要拿到单个的ref 只需要循环就可以了。

一、ref使用在外面的组件上 ref在外面的组件上 var refoutsidecomponentTem={ template:"我是子组件" }; var refoutsidecomponent=new Vue({ el:"#ref-outside-component", components:{ "component-father":refoutsidecomponentTem }, methods:{ consoleRef:function () { console.log(this); // #ref-outside-component vue实例 console.log(this.$refs.outsideComponentRef); // div.childComp vue实例,组件实例 } } }); 复制代码 二、ref作用在外面元素上 //ref在外面的元素上 ref在外面的元素上 var refoutsidedomTem={ template:"我是子组件" }; var refoutsidedom=new Vue({ el:"#ref-outside-dom", components:{ "component-father":refoutsidedomTem }, methods:{ consoleRef:function () { console.log(this); // #ref-outside-dom vue实例 console.log(this.$refs.outsideDomRef); //

标签dom元素 ref在外面的元素上

} } }); 复制代码 三、ref使用在里面的元素上--局部注册组件 //ref在里面的元素上 ref在里面的元素上 var refinsidedomTem={ template:"" + "我是子组件" + "", methods:{ consoleRef:function () { console.log(this); // div.childComp vue实例 console.log(this.$refs.insideDomRef); // 我是子组件 } } }; var refinsidedom=new Vue({ el:"#ref-inside-dom", components:{ "component-father":refinsidedomTem } }); 复制代码 四、ref使用在里面的元素上--全局注册组件 //ref在里面的元素上--全局注册 Vue.component("ref-inside-dom-quanjv",{ template:" " + "" + "

ref在里面的元素上--全局注册

" + "", methods:{ showinsideDomRef:function () { console.log(this); //这里的this其实还是div.insideFather console.log(this.$refs.insideDomRefAll); // } } }); var refinsidedomall=new Vue({ el:"#ref-inside-dom-all" }); 复制代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3